/*************************************************
* Title：TinyToolKit
* Author：Opportunity 
* Describe：二进制序列化的接口
* CreateTime：2020-12-16 17:50:11
* Version：1.0
* Modify Recorder：
*************************************************/

using System.IO;

namespace TinyToolKit
{
    public static partial class TinyUtility
    {
        public static partial class Binary 
        {
            public interface IBinaryTemplate
            {
                /// <summary>
                /// 二进制序列化
                /// </summary>
                /// <param name="filePath">二进制序列化文件保存的地址</param>
                /// <param name="obj">需要进行二进制序列化的对象</param>
                /// <returns>序列化成功返回true，否则返回false</returns>
                bool BinarySerialize(string filePath, object obj);

                /// <summary>
                /// 二进制反序列化
                /// </summary>
                /// <param name="bytes">用户自定义数据</param>
                /// <returns>返回反序列化的对象</returns>
                object BinaryDeserialize(byte[] bytes);
                
                /// <summary>
                /// 二进制反序列化
                /// </summary>
                /// <param name="stream">需要反序列化的文件流</param>
                /// <returns>返回反序列化的对象</returns>
                object BinaryDeserialize(Stream stream);

                /// <summary>
                /// 二进制反序列化
                /// </summary>
                /// <param name="filePath">需要反序列化的文件路径</param>
                /// <returns>返回反序列化的对象</returns>
                object BinaryDeserialize(string filePath);    
            }
        }   
    }
}
